home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-04 / bipl.zip / PROCS.ZIP / JULIAN.ICN < prev    next >
Text File  |  1992-09-28  |  1KB  |  49 lines

  1. ############################################################################
  2. #
  3. #    File:     julian.icn
  4. #
  5. #    Subject:  Procedure to produce Julian Day Number
  6. #
  7. #    Author:   Ralph E. Griswold
  8. #
  9. #    Date:     September 6, 1992
  10. #
  11. ###########################################################################
  12. #
  13. #  julian(m, d, y) returns the Julian Day Number for the specified
  14. #  month, day, and year.
  15. #
  16. ############################################################################
  17. #
  18. #  Acknowledgement:  This procedure is based on an algorithm given in
  19. #  "Numerical Recipes; The Art of Scientific Computing"; William H. Press,
  20. #  Brian P. Flannery, Saul A. Teukolsky. and William T. Vetterling;
  21. #  Cambrdayge University Press, 1986.
  22. #
  23. ############################################################################
  24.  
  25. procedure julian(month, day, year)
  26.    local jul, gregorian, ja, julian_year, julian_month
  27.  
  28.    gregorian := (15 + 31 * (10 + 12 * 1582))
  29.  
  30.    if year = 0 then fail
  31.    if year < 0 then year +:= 1
  32.    if month > 2 then  {
  33.       julian_year := year
  34.       julian_month := month + 1
  35.       } else {
  36.       julian_year := year - 1
  37.       julian_month := month + 13
  38.       }
  39.    jul := (integer(365.25 * julian_year) + integer(30.6001 * julian_month) +
  40.       day + 1720995)
  41.    if day + 31 * (month + 12 * year) >= gregorian then  {
  42.       ja := integer(0.01 * julian_year)
  43.       jul +:= 2 - ja + integer(0.25 * ja)
  44.       }
  45.  
  46.    return jul
  47.  
  48. end
  49.